package com.cook.service;

import com.cook.dto.user.PostDTO;
import com.cook.entity.Posts;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cook.vo.user.PostVO;

import java.util.Map;

/**
* @author black-white spider
* @description 针对表【posts(用户动态表)】的数据库操作Service
* @createDate 2025-10-27 19:54:38
*/
public interface PostsService extends IService<Posts> {

    /**
     * 分页查询用户的动态列表
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    Map<String, Object> getPostsByUserIdWithPage(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 分页查询所有动态列表
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    Map<String, Object> getAllPostsWithPage(Integer pageNum, Integer pageSize);

    /**
     * 创建动态
     * @param postDTO 动态DTO
     * @return 创建的动态ID
     */
    Long createPost(PostDTO postDTO);

    /**
     * 删除动态（安全删除，验证用户权限）
     * @param postId 动态ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deletePost(Long postId, Long userId);

    /**
     * 根据ID查询动态详情
     * @param postId 动态ID
     * @return 动态详情
     */
    PostVO getPostById(Long postId);

    /**
     * 查询用户的动态数量
     * @param userId 用户ID
     * @return 动态数量
     */
    int getPostsCountByUserId(Long userId);

    /**
     * 查询所有动态数量
     * @return
     */
    public int getAllPostsCount();
}
